package com.xunmeng.chapter1;

import java.io.File;
import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.StandardCharsets;

public class TestByteBuffer {





    public static void main(String[] args) {
        // 读文件data.txt
        // 前提获取该文件的channel，将数据读入到byteBuffer中，再将bytebuffer读出数据
        try(FileChannel fileChannel=new FileInputStream(new File(System.getProperty("user.dir"),"data.txt")).getChannel()) {
            // 创建bytebuff
            ByteBuffer byteBuffer = ByteBuffer.allocate(10);
            int len=0;
            while ((len=fileChannel.read(byteBuffer))!=-1){// 如果byte没有切换到写模式，那么就无法向byteBuffer中写入内容，也就是len为0
                System.out.println("len====>"+len);
                ByteBufferUtil.debugAll(byteBuffer);
                byteBuffer.flip();// 切换成读模式
                ByteBufferUtil.debugAll(byteBuffer);
                while (byteBuffer.hasRemaining()){
                    byte b = byteBuffer.get();
                    System.out.println((char) b);
                }
                ByteBufferUtil.debugAll(byteBuffer);
                byteBuffer.clear();
                ByteBufferUtil.debugAll(byteBuffer);
                System.out.println("*****************************************************************");
            }

        }catch (Exception e){
            e.printStackTrace();
        }

    }
}
